unified diff
概述
unified diff 是一种广泛使用的文本差异表示格式,使用标准的 + 和 - 符号来表示新增和删除的行,是大多数版本控制系统和代码工具的基础差异格式。
关键内容
- 格式结构:
+表示新增行(通常显示为绿色)-表示删除行(通常显示为红色)@@表示差异块的行号范围(通常显示为青色)-
保留行(不变的上下文)用于定位差异位置
-
在 Write-Tools 中的应用:
apply_patch工具使用统一差异格式执行文件修改- 作为 Approval Gate 中 diff 展示的标准格式
-
Claude Code 避免使用此方式,优先推荐 str_replace,因为 LLM 对行号的准确性较差,导致 fuzz 不匹配造成 apply 失败率高
-
主要缺点:
- 行号依赖性:对行号准确性要求很高,当文件结构发生变化时容易出现不匹配
- 格式敏感:换行、缩进等格式变化可能导致差异计算错误
-
语义盲区:只考虑文本层面的变化,无法理解代码的语义结构
-
使用场景:
- 版本控制系统(如 Git)的差异表示
- 代码审查中的变更展示
- 文件内容比较工具
- 某些 AI 工具的文件修改操作
来源
- write-tools.md — 三、三种写入策略的核心差异
- write-tools.md — 六、Approval Gate 与 Diff 展示
- write-tools.md — 八、横向对比
相关
- Write-Tools — used_in
- AST-based diff — alternative_to
- Git — uses
- apply_patch — format_for